package com.supms.course.mapper;

import java.util.HashMap;
import java.util.List;
import com.supms.course.domain.Attend;
import org.apache.ibatis.annotations.Param;

/**
 * 课堂听课Mapper接口
 * 
 * @author LiangHao
 * @date 2022-02-23
 */
public interface AttendMapper 
{
    /**
     * 查询课堂听课
     * 
     * @param id 课堂听课主键
     * @return 课堂听课
     */
    public Attend selectAttendById(Long id);

    /**
     * 查询课堂听课列表
     * 
     * @param attend 课堂听课
     * @return 课堂听课集合
     */
    public List<Attend> selectAttendList(Attend attend);

    /**
     * 新增课堂听课
     * 
     * @param attend 课堂听课
     * @return 结果
     */
    public int insertAttend(Attend attend);

    /**
     * 修改课堂听课
     * 
     * @param attend 课堂听课
     * @return 结果
     */
    public int updateAttend(Attend attend);

    /**
     * 删除课堂听课
     * 
     * @param id 课堂听课主键
     * @return 结果
     */
    public int deleteAttendById(Long id);

    /**
     * 批量删除课堂听课
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAttendByIds(Long[] ids);

    /**
     * 添加听课评价后，将总分和等级加入听课表中，并将听课评价标记改为'1'
     *
     * @param attend 更新内容：总分totalScore, 等级level, 听课表ID attendId
     */
    public void inputTotalScoreAndLevelById(Attend attend);

    /**
     * 查询已经做了听课评价的听课表
     *
     * @param ids 需要删除听课表的id数组
     * @return 已经做了听课评价的听课表id
     */
    public Long[] selectAttendEvalFlagByIds(Long[] ids);

    /**
     * 批量删除听课评价
     *
     * @param haveIds 已经做了听课评价的听课表ID
     */
    public void deleteAttendEvalByIds(Long[] haveIds);

    /**
     * 通过用户帐号获取督导姓名（用户姓名）
     * @param operName 用户账号
     * @return 结果（用户姓名 ==> 督导姓名）
     */
    String getSupNameByOperName(String operName);
}
